package com.fortune.dao;

import com.fortune.dto.in.clientOrder.ClientOrderEditDto;
import com.fortune.dto.in.clientOrder.ListDto;
import com.fortune.dto.in.clientOrder.AddDto;
import com.fortune.entity.*;
import com.fortune.vo.clientOrder.DriverInfo;
import com.fortune.vo.clientOrder.OrderDetail;

import com.fortune.vo.clientOrder.Product;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

public interface ClientUserDao {
    List<Order> selectClientList(@Param("listDto") ListDto listDto,@Param("did")String did);

    List<ProductOfUser> selectProduct(ListDto listDto);

    int addOrder(@Param("addDto") AddDto addDto);

    OrderDetail selectOrder(@Param("dId") String dId, @Param("clientId") String clientId, @Param("orderId") String orderId);

    DriverInfo selectDriver(@Param("dId") String dId, @Param("clientId") String clientId, @Param("orderId") String orderId);

    List<Product> selectProductDetail(@Param("dId") String dId, @Param("clientId") String clientId, @Param("orderId") String orderId);

//    List<AddProduct> selectClientCount(ClientOrderEditDto editDto);

    int deleteOrder(@Param("id") int id,@Param("clientId") int clientId);

    int updateOrder(ClientOrderEditDto editDto);

    UnitPrice selectUnitPrice();

    BackBoxPrice selectProductInfo();

    int addCOrder(@Param("did") String did,
                  @Param("clientId") String clientId,
                  @Param("id") String id,
                  @Param("no") String no,
                  @Param("userId") String userId,
                  @Param("pTotalPrice") BigDecimal pTotalPrice,
                  @Param("dTotalPrice") BigDecimal dTotalPrice);

    int addCOrderDetails(@Param("mid") String mid,
                         @Param("did") String did,
                         @Param("clientId") String clientId,
                         @Param("id") String id,
                         @Param("detailsNo") int detailsNo,
                         @Param("productId") String productId,
                         @Param("orderNum") float orderNum,
                         @Param("price") BigDecimal price,
                         @Param("policyId") String policyId,
                         @Param("unitPrice") BigDecimal unitPrice,
                         @Param("backBoxNum") float backBoxNum,
                         @Param("dprice") BigDecimal dprice,
                         @Param("tprice") BigDecimal tprice);

    int addCOrderDetailsByZS(@Param("mid") String mid,
                             @Param("did") String did,
                             @Param("clientId") String clientId,
                             @Param("id") String id,
                             @Param("detailsNo") int detailsNo,
                             @Param("productId") String productId,
                             @Param("orderNum") float orderNum,
                             @Param("price") BigDecimal price,
                             @Param("policyId") String policyId,
                             @Param("unitPrice") BigDecimal unitPrice,
                             @Param("backBoxNum") float backBoxNum,
                             @Param("dprice") BigDecimal dprice,
                             @Param("tprice") BigDecimal tprice);

    int editOrder(@Param("did") String did,
                  @Param("clientId") String clientId,
                  @Param("ordersId") String ordersId,
                  @Param("pTotalPrice") BigDecimal pTotalPrice,
                  @Param("dTotalPrice") BigDecimal dTotalPrice);

    int updateOrderStatus(@Param("did") String did,
				            @Param("clientId") String clientId,
				            @Param("ordersId") String ordersId);

	int deleteDetails(@Param("did") String did,
			            @Param("clientId") String clientId,
			            @Param("orderId") String orderId);
}
